class Payment:
    """
    支付抽象基类，定义支付处理的接口规范
    该类作为所有支付方式的基类，强制要求子类实现具体的支付处理逻辑
    """
    def process_payment(self, amount):
        """
        处理支付的抽象方法，需要子类重写实现
        参数:
            amount (float): 支付金额

        异常:
            NotImplementedError: 当子类未实现该方法时抛出
        """
        raise NotImplementedError("Subclasses should implement this method.")


class CreditCardPayment(Payment):
    """
    信用卡支付类，继承自Payment基类

    实现信用卡支付的具体处理逻辑
    """
    def process_payment(self, amount):
        """
        处理信用卡支付

        参数:
            amount (float): 支付金额
        """
        print(f"信用卡支付 ${amount}.")


class BankTransferPayment(Payment):
    """
    银行转账支付类，继承自Payment基类

    实现银行转账支付的具体处理逻辑
    """
    def process_payment(self, amount):
        """
        处理银行转账支付

        参数:
            amount (float): 支付金额
        """
        print(f"银行转账支付 ${amount}.")


def make_payment(payment_method: Payment, amount):
    """
    执行支付的通用函数

    该函数使用策略模式，通过传入不同的支付对象来执行相应的支付处理

    参数:
        payment_method (Payment): 支付方式对象，必须是Payment类的实例
        amount (float): 支付金额
    """
    payment_method.process_payment(amount)


# 创建支付对象并调用
credit_card = CreditCardPayment()
bank_transfer = BankTransferPayment()

make_payment(credit_card, 100)  # 输出: Processing credit card payment of $100.
make_payment(bank_transfer, 200)  # 输出: Processing bank transfer payment of $200.
